7.3. WebApplicationException and Mapping Exceptions to Responses 异常

    下面的示例演示了当 资源的方法返回一个错误的 HTTP 响应给客户端时,抛出 CustomNotFoundException :

    Example 7.4. Throwing exceptions to control response

    Example 7.5. Application specific exception implementation

    在其他情况下,它可能不适合把 WebApplicationException实例,或扩展了 类的异常抛出,相反,它可能是可取的存在的异常响应 map 。对于这样的情况可以使用自定义异常映射提供者。供应者必须实现 ExceptionMapper 接口 。例如,下面一个 map 到 HTTP 404(Not Found) 的响应:

    上面的类使用了 @Provider 注解,这个声明的类是 JAX-RS 运行时。这样的类可以被添加到配置了的 实例的类的集合中。当应用程序抛出一个 EntityNotFoundException时,EntityNotFoundMapper 实例的 toResponse 方法将被调用。

    Jersey 支持扩展映射器的异常。这些扩展映射器必须实现org.glassfish.jersey.spi。ExtendedExceptionMapper 接口。另外这个接口定义方法 isMappable(Throwable), 将被 Jersey 运行时调用当异常抛出并且这个供应者被认为是可映射基于异常类型。使用这种方法,异常的提供者可以拒绝异常映射在方法 toResponse 被调用之前。提供者可以例如检查异常参数,基于他们返回 false,和让其他供应者选择异常映射。